﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;

using DauGiaApp.Models;
namespace DauGiaApp.Models
{
    public partial class DauGiaEntities
    {
        public List<SanPham> LayDSSPMoiDang(int count)
        {
            
            List<SanPham> dsSanPham = SanPhams.ToList();
            if (count >= dsSanPham.Count)
                return dsSanPham;
            else
            {
                // return dsSanPham;
                List<SanPham> dsspMoiDang = new List<SanPham>();
                while (dsspMoiDang.Count < count)
                {
                    //SanPham sp = dsSanPham[0];
                    int index = 0;
                    for (int i = 0; i < dsSanPham.Count; ++i)
                    {
                        if (dsSanPham[index].NgayDang < dsSanPham[i].NgayDang)
                        {
                            index = i;
                        }
                    }
                    dsspMoiDang.Add(dsSanPham[index]);
                    dsSanPham.RemoveAt(index);
                }
                return dsspMoiDang;
            }
        }
        public List<SanPham> LayDSSPDauGiaNhieu(int count)
        {
            List<SanPham> dsSanPham = SanPhams.ToList();
            if (count >= dsSanPham.Count)
                return dsSanPham;
            else
            {
                // return dsSanPham;
                List<SanPham> dsspDauGiaNhieu = new List<SanPham>();
                //while (dsspDauGiaNhieu.Count < count)
                //{
                //    //SanPham sp = dsSanPham[0];
                //    int index = 0;
                //    for (int i = 0; i < dsSanPham.Count; ++i)
                //    {
                //        if (dsSanPham[index].DauGias.Count > 0)
                //        {
                //            if (dsSanPham[index].DauGias.Count > 0 &&
                //            dsSanPham[index].DauGias.Single().ChiTietDauGias.Count <
                //                            dsSanPham[i].DauGias.Single().ChiTietDauGias.Count)
                //            {
                //                index = i;
                //            }
                //        }
                        
                //    }
                //    dsspDauGiaNhieu.Add(dsSanPham[index]);
                //    dsSanPham.RemoveAt(index);
                //}
                return dsspDauGiaNhieu;
            }
        }
        public string LayGiaoDien()
        {
            GiaoDien gdien = (from gd in GiaoDiens
                              where (gd.DangSuDung == true)
                              select gd).Single();
            return gdien.Linkcss;
        }
    }

    [MetadataType(typeof(SanPhamMetaData))]
    partial class SanPham
    {

        DauGiaEntities data = new DauGiaEntities();
        public static int takeView = 3; // xem 20 sp mot lan
        public string LayAnhDaiDien()
        {
            //../../Uploads/samsung_s7372e_b.jpg
            return "../../Uploads/" + Multimedia.LinkURL;

        }

        public List<string> LayDSAnh()
        {
            List<string> dsanh = new List<string>();
            
            for (int i = 0; i < this.SanPham_Multimedia.Count; i++)
                dsanh.Add(this.SanPham_Multimedia.ElementAt(i).Multimedia.LinkURL);
            return dsanh;
        }

        public List<Comment> LayDanhSachComment()
        {
            var query = from n in this.Comments                        
                        select n;
            return query.ToList();

        }

        public List<SanPham> LaySPCungLoaiDangDG()
        {
            List<SanPham> lsp = null;
              lsp = data.SanPhams
                        .Where(sp => sp.MaLoaiSanPham == this.MaLoaiSanPham
                                && sp.MaTinhTrangSanPham == 2)
                        .OrderByDescending(or => or.NgayDang)
                        .Take(5)
                        .ToList();
              return lsp;
        }

        
    }
    public class SanPhamMetaData
    {
        [Required(ErrorMessage = "Vui lòng nhập tên sản phẩm")]
        //[StringLength(20, ErrorMessage = "Tên đăng nhập phải ít hơn 20 ký tự")]
        //[Remote("UsernameExist", "Account", "Username is already taken")]
        
        public string TenSanPham { get; set; }

        [Required(ErrorMessage = "Vui lòng nhập Giá khởi điểm")]        
        public string GiaKhoiDiem { get; set; }

        [Required(ErrorMessage = "Vui lòng nhập Giá khởi điểm")]
        public string GiaThiTruong { get; set; }

    }

}